1 module unde.games.dizzy.omega.animations.bucket;
2 
3 import derelict.opengl3.gl;
4 import unde.games.object;
5 import unde.games.renderer;
6 import unde.global_state;
7 
8 class Bucket:StaticGameObject
9 {    
10     this(MainGameObject root)
11     {
12         frame = -1;
13         models["bucket-of-water"] = root.models["bucket-of-water"];
14         models["bucket-out-water"] = root.models["bucket-out-water"];
15         models["bucket"] = root.models["bucket"];
16         super(root);
17     }
18 
19     void start_anim(float[3] coords)
20     {
21         x = coords[0];
22         y = coords[1];
23         z = coords[2];
24         frame = root.frame;
25     }
26 
27     override void draw(GlobalState gs)
28     {
29         float f = 0.0;
30         if (frame >= 0) f = root.frame - frame;
31 
32         glPushMatrix();
33         if (f <= 0.0) {}
34         else if (f <= 50.0)
35         {
36             glTranslatef(x-2.0*f/50.0, y-0.5*f/50.0, z-2.0*f/50.0);
37 
38             glTranslatef(0.0, 1.0, 0.0);
39             glRotatef(90.0*f/50.0, -1.0, 0.0, 0.0);
40             glTranslatef(0.0, -1.0, 0.0);
41             
42             recursive_render(gs, models["bucket-of-water"]);
43         }
44         else if (f <= 100.0)
45         {
46             glTranslatef(x-2.0, y-0.5, z-2.0);
47 
48             glTranslatef(0.0, 1.0, 0.0);
49             glRotatef(90.0, -1.0, 0.0, 0.0);
50             glTranslatef(0.0, -1.0, 0.0);
51             
52             recursive_render(gs, models["bucket-out-water"]);
53         }
54         else if (f <= 200.0)
55         {
56             glTranslatef(x-2.0, y-0.5, z-2.0);
57 
58             glTranslatef(0.0, 1.0, 0.0);
59             glRotatef(90.0, -1.0, 0.0, 0.0);
60             glTranslatef(0.0, -1.0, 0.0);
61             
62             recursive_render(gs, models["bucket"]);
63         }
64 
65         else {}
66         glPopMatrix();
67     }
68     
69     override bool tick(GlobalState gs)
70     {
71         return true;
72     }
73 }
74